The storage of electronic data, and more generally, the management of electronic data, has become increasingly important. With the growth of the Internet, and of cloud computing in particular, the need for data storage capacity, and for methods of efficiently managing stored data, continue to increase. Many different types of storage devices and storage systems are currently used to store data, including disk drives, tape drives, optical disks, redundant arrays of independent disks (RAIDs), Fibre channel-based storage area networks (SANs), etc.
In many enterprise-level storage systems, it is useful to add data management services to the existing storage system in order to perform one or more desired tasks. For example, it may be useful in some storage systems to add functionality to copy data, to perform a snapshot of a data image, to back up data, to replicate data, to perform data migration from one storage device or system to another, etc. It is typically desirable to install any additional functionality for performing such services without causing any interruption to the storage system's operations.
Virtualization is a tool that is widely used in the data storage industry to facilitate the provision of data management services. A virtualization system may create a virtual storage layer containing one or more virtual storage devices, and enable a host entity to access the virtual storage device(s). The virtualization system presents a virtual storage layer, including one or more virtual storage devices, to the host entity; the virtualization system may thereafter receive communications from the host entity and redirects the communications to one or more actual storage devices. A data management service, such as data migration, data backup, replication, etc., may be performed transparently after a virtual storage layer is established.
While virtualization is widely used, existing virtualization systems cannot be installed without interruption of input/output (I/O) operations. Existing virtualization systems can only be installed after communications between the host entity and the storage device have been interrupted. Typically, this requires application host downtime. While the host is down, the virtualization layer is established: existing paths between the host entity and the original storage device are terminated, new paths associated with the virtual storage layer are created, etc. When I/O access is re-started, the host entity must re-initiate communications with the virtual storage device using the new paths within the virtualization layer.
There is a need for methods, apparatus, and systems to transparently insert a virtual storage layer into a storage network without interrupting I/O operations.